/**
 * 模块类型定义
 */
export type ModuleType = 'banner' | 'title' | 'content' | 'tabs' | 'table' | 'timeline';

/**
 * 文本样式配置接口
 */
export interface TextStyle {
  fontSize: number;
  fontColor: string;
  fontBold: boolean;
  italic: boolean;
  underline: boolean;
  alignCenter: string;
  textWidth: number;
  textHeight: number;
}

/**
 * 背景图片信息接口
 */
export interface BackgroundImageInfo {
  w: number;
  h: number;
  imgUrl: string;
}

/**
 * Banner模块数据接口
 */
export interface BannerModuleData {
  show: boolean;
  bannerUrl: string;
  button: {
    show: boolean;
    text: string;
    color: string;
    x: number;
    y: number;
    link: string;
    textStyle: TextStyle;
  };
}

/**
 * 标题模块数据接口
 */
export interface TitleModuleData {
  bgType: 'color' | 'image';
  bgColor: string;
  bgImageInfo: BackgroundImageInfo;
  titleInfo: {
    title: string;
    titleUrl: string;
    textStyle: TextStyle;
  };
  descInfo: {
    desc: string;
    textStyle: TextStyle;
  };
}

/**
 * 内容模块数据接口
 */
export interface ContentModuleData {
  bgType: 'color' | 'image';
  bgColor: string;
  bgImageInfo: BackgroundImageInfo;
  titleInfo: {
    title: string;
    titleUrl: string;
    textStyle: TextStyle;
  };
  content: string;
}

/**
 * 页签模块数据接口
 */
export interface TabsModuleData {
  bgColor: string;
  textStyle: { size: number; bold: boolean };
  list: Array<{ id: number; title: string; content: string }>;
  active: number;
}

/**
 * 表格模块数据接口
 */
export interface TableModuleData {
  bgColor: string;
  tableConfig: {
    data: string[][];
    config: {
      mergedCells: any[];
      cellStyles: any[];
      columnWidths: any[];
      colHeaders: string[];
    };
  };
}

/**
 * 时间轴模块数据接口
 */
export interface TimelineModuleData {
  bgColor: string;
  items: Array<{
    id: number;
    title: string;
    date: string;
    desc: string;
  }>;
}

/**
 * 模块数据联合类型
 */
export type ModuleData = 
  | BannerModuleData 
  | TitleModuleData 
  | ContentModuleData 
  | TabsModuleData 
  | TableModuleData 
  | TimelineModuleData;

/**
 * 模块实例接口
 */
export interface ModuleInstance {
  id: string;
  type: Exclude<ModuleType, 'banner'>;
  order: number;
  data: ModuleData;
  createdAt: number;
}

/**
 * Banner模块实例接口
 */
export interface BannerModule {
  id: string;
  type: 'banner';
  data: BannerModuleData;
}

/**
 * 激活模块接口
 */
export interface ActiveModule {
  type: ModuleType;
  id: string;
  moduleData?: ModuleData;
}

/**
 * 模块按钮配置接口
 */
export interface ModuleButton {
  key: ModuleType;
  label: string;
}

/**
 * 配置数据结构接口（新的列表结构）
 */
export interface ConfigData {
  banner: BannerModuleData;
  modules: ModuleInstance[];
}

/**
 * API请求数据接口
 */
export interface ApiRequestData {
  id?: string;
  matchId: string;
  configTemplate: string;
  status: number;
  lastEditId?: string;
}

/**
 * 组件Props接口
 */
export interface DrawerProps {
  modelValue: boolean;
  mode: 'add' | 'edit';
  formData: Record<string, any>;
}

/**
 * 组件Emits接口
 */
export interface DrawerEmits {
  'update:modelValue': [value: boolean];
  'success': [response: any];
  'cancel': [];
}
